#include<string.h>
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
#include"personnel.h"


void ajouter_personnel (Personnel *P)
{
	char fper[MAX];
	char metier[MAX];
	
	time_t secondes;
	struct tm instant;
	time(&secondes);
	instant=*localtime(&secondes);

printf("donner le nom de personnel:\t");
scanf("%s",P->nom);

printf("donner le prenom de personnel:\t");
scanf("%s",P->prenom);

do
{
printf("donner le cin de personnel:\t");
scanf("%ld",&(*P).cin);
}while(((P->cin)<=1999999)||(((P->cin)>100000000)));

do
{
printf("donner l'age du personnel:\t");
scanf("%d",&(P->age));
}while ((P->age<18)||(P->age>110));

do 
{
printf("donner la profession du personnel:\t");
scanf("%s",metier);
} while ((strcmp(metier,"medecin")!=0)&&(strcmp(metier,"infirmier")!=0)&&(strcmp(metier,"technicien")!=0)&&(strcmp(metier,"responsable_de_l'hygiene")!=0)&&(strcmp(metier,"admin")!=0));
strcpy(P->profession,metier);


if(strcmp(P->profession,"admin")==0)
{
	printf("donner le mot de passe:\t");
	scanf("%s",P->mdp);


}






do{
printf("donner l'identifiant du personnel:\t");
scanf("%ld",&(*P).identifiant);
}while((P->identifiant<10000) || (P->identifiant>20000) && (rechercher_personnel("fper",P->identifiant)!=-1));

P->jj=instant.tm_mday;
P->mm=instant.tm_mon+1;
P->aaaa=instant.tm_year+1900;

P->jj_s=00;
P->mm_s=00;
P->aaaa_s=0000;

}


void enregistrer_personnel(char fper[],Personnel *P)
{

	FILE *f;
	ajouter_personnel (P);
	f=fopen(fper,"ab");
	if(f!=NULL)
	{
		fwrite(P,sizeof(Personnel),1,f);
		
	}	
	
	else
	{
		printf("\n\nImpossible d'ouvrir le fichier\n\n");
	}

	
fclose(f);

}



void liste_personnel(char fper[] )
{
FILE *f;
int i=1;
Personnel P;
f=fopen(fper,"rb");
if(f!=NULL)
{

while((fread(&P,sizeof(Personnel),1,f)!=0))
{
printf("\n");


printf("\nNom : %s\nPrenom : %s\nAge : %d\nprofession:\t%s\nAjoutée le: %d/%d/%d\n sortie le : %d/%d/%d\n",P.nom,P.prenom,P.age,P.profession,P.jj,P.mm,P.aaaa,P.jj_s,P.mm_s,P.aaaa_s);
printf(" Le personnel numéro %d :",i);
printf("\nIdenfiant: %ld",P.identifiant);
i++;
}

}
else
printf("\nImpossible d'ouvrir le fichier de ce directeur");
fclose(f);
}


int rechercher_personnel(char fper[], long int identifiant)
{
FILE *f;
int t=0;
Personnel P;
f=fopen(fper,"rb");
if (f!=NULL)
{
   while(!feof(f)&&t==0)
   {
     fread(&P,sizeof(Personnel),1,f);
       if(P.identifiant==identifiant)
           t=1;
   }
fclose(f);
}
else
t=-1;
return (t);

}


void supprimer_personnel (Personnel P) 
{
int a,t; 
long int identifiant; 
FILE *f1,*f2; 
char chemin[]="fper"; 
char temp[]="temp";

f1=fopen(chemin,"rb");
 f2=fopen(temp,"wb"); 
 if(f1==NULL||f2==NULL) 
 printf("\n Impossible d'ouvrir le fichier \n");

else{ 
t=0;

printf("\ndonner identifiant\n"); 
scanf("%ld",&(identifiant)); 
/*
do {
while((fread(&P,sizeof(Personnel),1,f1))!=EOF)
{ 

	printf("\ndonner identifiant\n"); 
	scanf("%ld",&(identifiant)); 
	
	if(P.identifiant!=identifiant)
	{
	printf("l'indentifiant n'existe pas \n");
	
	}else
		t=1 ;
   }}while(t==1);


*/






while (fread(&P,sizeof(Personnel),1,f1)!=0 )
{

if (P.identifiant!=identifiant)
fwrite(&P,sizeof(Personnel),1,f2);
}
printf("\nc'est fait\n");
 fclose(f1);
  fclose(f2);
   remove(chemin); 
   rename(temp,chemin);
   
   

 } }

/**************** Modification Personnel ****************************/




void modifier(Personnel *P)
{
  char nnom[MAX];
  char nprenom[MAX];
  int nage;
  
	printf("donner le nom");
	scanf("%s",nnom);
	strcpy(P->nom,nnom);
	
	printf("donner le prenom");
	scanf("%s",nprenom);
	strcpy(P->prenom,nprenom);
	
	printf("donner l'age");
	scanf("%d",&nage);
	P->age=nage;
	
}





void modifier_personnel (Personnel P) 
{
int a,t; 
long int identifiant; 
FILE *f1,*f2; 
char chemin[]="fper"; 
char temp[]="temp";

f1=fopen(chemin,"rb");
 f2=fopen(temp,"wb"); 
 if(f1==NULL||f2==NULL) 
 printf("\n Impossible d'ouvrir le fichier \n");

else{ 
t=0;

printf("\ndonner identifiant\n"); 
scanf("%ld",&(identifiant)); 
/*
do {
while((fread(&P,sizeof(Personnel),1,f1))!=EOF)
{ 

	printf("\ndonner identifiant\n"); 
	scanf("%ld",&(identifiant)); 
	
	if(P.identifiant!=identifiant)
	{
	printf("l'indentifiant n'existe pas \n");
	
	}else
		t=1 ;
   }}while(t==1);


*/






while (fread(&P,sizeof(Personnel),1,f1)!=0 )
{	

if (P.identifiant==identifiant)
{	
	modifier(&P);
fwrite(&P,sizeof(Personnel),1,f2);
}
else fwrite(&P,sizeof(Personnel),1,f2);
{
printf("\nc'est fait\n");
}
}

 fclose(f1);
  fclose(f2);
   remove(chemin); 
   rename(temp,chemin);
   
   

 } }


/********************** Modification Date sortie ****************/


void modifier_date(Personnel *P)
{
        time_t secondes;
	struct tm instant;
	time(&secondes);
	instant=*localtime(&secondes);
  
	P->jj_s=instant.tm_mday;
	P->mm_s=instant.tm_mon+1;
	P->aaaa_s=instant.tm_year+1900;
	
}



void modifier_date_sortie_personnel (Personnel P) 
{
int a,t; 
long int identifiant; 
FILE *f1,*f2; 
char chemin[]="fper"; 
char temp[]="temp";

f1=fopen(chemin,"rb");
 f2=fopen(temp,"wb"); 
 if(f1==NULL||f2==NULL) 
 printf("\n Impossible d'ouvrir le fichier \n");

else{ 
t=0;

printf("\ndonner identifiant\n"); 
scanf("%ld",&(identifiant)); 


while (fread(&P,sizeof(Personnel),1,f1)!=0 )
{	

if (P.identifiant==identifiant)
{	
	modifier_date(&P);
fwrite(&P,sizeof(Personnel),1,f2);
}
else fwrite(&P,sizeof(Personnel),1,f2);
{

}
}
printf("\nc'est fait\n");
 fclose(f1);
  fclose(f2);
   remove(chemin); 
   rename(temp,chemin);
   
   

 } }

